#ifndef __HTTP_H__
#define __HTTP_H__

#include <stdint.h>
#include <string.h>
#include <stdbool.h>

#include "esp8266_driver.h"
/* ------------------Http发送请求------------------*/
// HTTP请求类型
typedef enum {
    HTTP_GET,
    HTTP_POST
} HttpRequestType;

// HTTP请求配置结构体
typedef struct {
    HttpRequestType type;      // 请求类型（GET/POST）
    const char *host;          // 目标主机（如 "httpbin.org"）
    const char *path;          // 路径（如 "/post"）
    const char *json_body;     // JSON数据（POST时使用，GET时为NULL）
    uint16_t port;             // 端口号（HTTP默认80）
} HttpRequest;


/* ------------------Http接收------------------*/

// HTTP响应状态码
typedef enum {
    HTTP_STATUS_OK = 200,
    HTTP_STATUS_BAD_REQUEST = 400,
    HTTP_STATUS_NOT_FOUND = 404,
    // 其他状态码按需扩展
} HttpResponseStatus;

// HTTP响应结构体
typedef struct {
    HttpResponseStatus status;  // 状态码（如200）
    char *headers;             // 响应头（动态分配内存）
    char *body;                // 响应体（如JSON数据，动态分配内存）
    size_t body_len;           // 响应体长度
} HttpResponse;

// 全局接收缓冲区（根据实际硬件调整大小）
#define UART_RX_BUFFER_SIZE 1024
extern char uart_rx_buffer[UART_RX_BUFFER_SIZE];
extern size_t uart_rx_length;

bool http_request_send(const HttpRequest *request);
bool http_response_receive(HttpResponse *response);
void http_response_free(HttpResponse *response);

#endif /* __HTTP_H__ */
